package com.xieh.webmagic.magic;

import us.codecraft.webmagic.ResultItems;
import us.codecraft.webmagic.Task;
import us.codecraft.webmagic.pipeline.Pipeline;

import java.io.*;
import java.net.URLDecoder;
import java.net.URLEncoder;

/**
 * @author 谢辉
 * @Classname MyPipeline
 * @Description TODO
 * @Date 2020/11/21 12:06
 */
public class MyPipeline implements Pipeline {
    @Override
    public void process(ResultItems resultItems, Task task) {
        String movieName = resultItems.get("name");
        String movieLink = resultItems.get("link");
        String content = "电影名字："+ movieName + "\t" + "链接：" + movieLink +"\r\n" ;

        try {
            //String finalStr = URLDecoder.decode( URLEncoder.encode (content, "UTF-8" ) ,"UTF-8") ;
            if(movieName != null || movieLink != null){
                save("D://file//movie.txt",content);
            }


        }catch (IOException e){
          e.printStackTrace();
        }

    }

    /**
     * 保存到文件中
     * @param filename 文件名
     * @param content 保存内容
     */
    private void save(String filename,String content) throws IOException {

        /* RandomAccessFile出现FileNotFoundException
          原因是 RandomAccessFile 不能跨目录创建文件。
          比如原目录是 test\\shareMemory\
          则只能在该目录下直接创建，如果想让其直接创建 test\\shareMemory\test\a.file
          就会报文件找不到的异常。因此必须手动创建 test\\shareMemory\test 目录后，方可自行创建文件。
        * */
        RandomAccessFile randomAccessFile = new RandomAccessFile(filename,"rw");
        long length = randomAccessFile.length();
        // 指针移到文件末尾
        randomAccessFile.seek(length);
        randomAccessFile.writeBytes(content);
        randomAccessFile.close();
    }

}
